package com.sanbuTech.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 类描述：用于命名风格下划线与驼峰风格的相互转换
 * 创建人：hyc   
 * 创建时间：2016年1月16日 下午2:57:33
 */
public class StringNameStypeUtil {

	/**
	 * 字符串: 下划线风格转驼峰风格
	 * eg: aa_bb_cc_dd => aaBaCcDd
	 * 
	 * @param source
	 * @return
	 */
	public static String underline2Hump(String source) {
		Pattern p = Pattern.compile("_[a-z]");
		Matcher m = p.matcher(source);
		StringBuffer sb = new StringBuffer();
		while (m.find()) {
			String firstChar = m.group().substring(1, 2);
			m.appendReplacement(sb, firstChar.toUpperCase());
		}
		m.appendTail(sb);
		return sb.toString();
	}

	/**
	 * 字符串: 驼峰风格转下划线风格
	 * eg: aaBaCcDd => aa_bb_cc_dd
	 * 
	 * @param source
	 * @return
	 */
	public static String hump2Underline(String source) {
		Pattern p = Pattern.compile("[A-Z]");
		Matcher m = p.matcher(source);
		StringBuffer sb = new StringBuffer();
		while (m.find()) {
			String firstChar = m.group();
			m.appendReplacement(sb, "_" + firstChar.toLowerCase());
		}
		m.appendTail(sb);
		return sb.toString();
	}
}
